﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Helena.Areas.Campanas.Models;
using System.Data.Entity;
using Helena.Areas.Productos.Models;
using Helena.Areas.Categorias.Models;
using Helena.Areas.Configuraciones.Models;
using Helena.Areas.Vendedores.Models;
using Helena.Areas.Salidas.Models;
using Helena.Areas.Entradas.Models;
using Helena.Areas.Degustaciones.Models;
using Helena.Areas.Ventas.Models;
using Helena.Areas.Clientes.Models;
using Helena.Areas.Reportes.Models;
using Helena.Areas.Proveedores.Models;

namespace Helena.Models
{
	public partial class DBContext : DbContext
	{
		public DbSet<Campana> t_Campanas { get; set; }
		public DbSet<Categoria> t_Categorias { get; set; }
		public DbSet<Producto> t_Productos { get; set; }
		public DbSet<DetalleProducto> t_DetalleProductos { get; set; }
		public DbSet<Unidad> t_Unidades { get; set; }
		public DbSet<Vendedor> t_Vendedor { get; set; }
		public DbSet<Salida> t_salida { get; set; }
		public DbSet<DetalleSalida> t_DetalleSalida { get; set; }
		public DbSet<Entrada> t_Entrada { get; set; }
		public DbSet<DetalleEntrada> t_DetalleEntrada { get; set; }
		public DbSet<Degustacion> t_Degustacion { get; set; } 
		public DbSet<Local> t_Local { get; set; }
		public DbSet<Configuracion> t_configuracion { get; set; }
		public DbSet<Venta> t_Venta { get; set; }
		public DbSet<DetalleVenta> t_DetalleVenta { get; set; }
		public DbSet<Tarjeta> t_Tarjetas { get; set; }
		public DbSet<Cliente> t_Cliente { get; set; }
		public DbSet<Proveedor> t_Proveedores { get; set; }
		public DbSet<Kardex> t_Kardexs { get; set; }
		public DbSet<CierreCaja> t_CierreCajas { get; set; }
		

		public DBContext()
            //: base(@"Data Source=LAP-PEDRO-PC\SQLEXPRESS;Initial Catalog=Helena;Integrated Security=True")
		: base(@"Data Source=HELENA-PC\SQLEXPRESS;Initial Catalog=Helena;Integrated Security=True")	// FIORELLA
        //: base(@"Data Source=HELENA-PC\HELENA;Initial Catalog=Helena;Integrated Security=True")	// PRODUCCION
        {
			//CONEXION A LA BASE DE DATOS
		}

		protected override void OnModelCreating(DbModelBuilder modelBuilder)
		{
			base.OnModelCreating(modelBuilder);
			modelBuilder.Entity<DetalleSalida>().HasRequired(e => e.salida)
													.WithMany(e => e.detallesalida)
													.HasForeignKey(e => e.SalidaID)
													.WillCascadeOnDelete(false);

			modelBuilder.Entity<DetalleProducto>().HasRequired(e => e.Unidad)
										.WithMany(e => e.DetalleProductos)
										.HasForeignKey(e => e.unidadID)
										.WillCascadeOnDelete(false);

			modelBuilder.Entity<Producto>().HasRequired(e => e.proveedor)
							.WithMany(e => e.productos)
							.HasForeignKey(e => e.proveedorID)
							.WillCascadeOnDelete(false);

			modelBuilder.Entity<Entrada>().HasRequired(e => e.Proveedor)
										.WithMany(e => e.Entradas)
										.HasForeignKey(e => e.ProveedorID)
										.WillCascadeOnDelete(false);

			modelBuilder.Entity<Salida>().HasRequired(e => e.Proveedor)
										.WithMany(e => e.Salidas)
										.HasForeignKey(e => e.ProveedorID)
										.WillCascadeOnDelete(false);

			//Precision para los productos
			modelBuilder.Entity<Producto>().Property(t_Productos => t_Productos.preciofabrica).HasPrecision(18, 10);
			modelBuilder.Entity<Producto>().Property(t_Productos => t_Productos.precioventa).HasPrecision(18,10 );
			modelBuilder.Entity<DetalleProducto>().Property(t_detalleproducto => t_detalleproducto.PrecioVenta).HasPrecision(18, 10);

			//Precision para las Entradas
			modelBuilder.Entity<DetalleEntrada>().Property(t_detalleEntrada => t_detalleEntrada.Igv).HasPrecision(18, 10);
			modelBuilder.Entity<DetalleEntrada>().Property(t_detalleEntrada => t_detalleEntrada.PrecioU).HasPrecision(18, 10);
			modelBuilder.Entity<DetalleEntrada>().Property(t_detalleEntrada => t_detalleEntrada.Subtotal).HasPrecision(18, 10);
			modelBuilder.Entity<DetalleEntrada>().Property(t_detalleEntrada => t_detalleEntrada.Total).HasPrecision(18, 10);

			//Precision para las Ventas
			modelBuilder.Entity<CierreCaja>().Ignore(t => t.Ventas);
		    base.OnModelCreating(modelBuilder);
		}
		
	}
}
